//
//  OAuthViewController.swift
//  MXWeiBo
//
//  Created by Apple on 16/2/25.
//  Copyright © 2016年 Applea. All rights reserved.
//

import UIKit
//身份验证控制器
class OAuthViewController: UIViewController {

    private lazy var webView = UIWebView()
    
//    MARK: --视图生命周期
    override func loadView() {
        view = webView
//        设置导航栏
        title="登录新浪微博"
        navigationItem.leftBarButtonItem = UIBarButtonItem(
            title: "取消",
            style: .Plain,
            target: self,
            action: "clickCloseButton")
//        设置自动填充
        navigationItem.rightBarButtonItem=UIBarButtonItem(
            title: "自动填充",
            style: .Plain,
            target: self,
            action: "clickAutoFillButton")
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    view.backgroundColor=UIColor.whiteColor()
//        加载授权 URL
        webView.loadRequest(NSURLRequest(URL: NetworkTools.sharedTools.oauthURL))
        
//       设置代理
        webView.delegate=self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
//    MARK:--监听方法
    @objc private func clickCloseButton() {
        
    dismissViewControllerAnimated(true, completion: nil)
    
    }
    @objc private func clickAutoFillButton() {
    
        let js="document.getElementById('userId').value = '13661731376';" +
        "document.getElementById('passwd').value = 'cq19940525';"
        webView.stringByEvaluatingJavaScriptFromString(js)
    }
}
//    MARK:  --UIWebViewDelegate
extension OAuthViewController:UIWebViewDelegate
{
//    将要开始加载视频请求，每次加载新的页面时，都会被调用，执行当前页面的js不会被调用
//    return:是否加载 通常在 IOS 的 代理方法中，如果返回BOOL，通常返回YES一切OK，返回false 不正常执行
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
//        如果URL 不是回调地址，就继续加载页面
//        absoluteString:URL 的完整字符串
//        hasPrefix 前面的对象必须保证不为 nil
//        if let urlString = request.URL?.absoluteString
//        {
//            if !urlString.hasPrefix(NetworkTools.sharedTools.redirecturi){
//            return true
//            }
//            
//        }
//        where 是前面执行的条件，没有智能提示，需要先写好上注释的代码再复制
        if let urlString = request.URL?.absoluteString
        where
            !urlString.hasPrefix(NetworkTools.sharedTools.redirecturi){
                return true
            }
            
        
        //        否则判断回调参数，如果授权成功 URL 的查询字符串在包含 code 参数
//        query:是 URL ‘？’后面所有的内容
        
        
//          1.判断 query 中是否有code ＝
        guard let query = request.URL?.query where query.hasPrefix("code=") else {
            print("取消授权")
//        关闭窗口
            dismissViewControllerAnimated(true, completion: nil)
    
            return false
        }
        print("请求字符串 " + query)
        //            2.获得请求码
        let code = query.substringFromIndex("code=".endIndex)
        print("请求码＝\(code)")
//            3.发起网络请求，做后续操作
   NetworkTools.sharedTools.loadAccessToken(code) { (result) -> () in
    
    guard let result = result else
    {
        print("您的网络不给力")
        return
    }
//    设置用户账户单例的数据
    UserAccount.sharedUserAccount.upDateUserAccount(result)
//     登录成功
//    1.通知代理工作
    NSNotificationCenter.defaultCenter().postNotificationName(MXWeiBoLoginSuccessedNotification, object: nil)
//    2.关闭控制器
    self.clickCloseButton()
 //保存用户账户
       
        }
        return false
    }
}
